package cn.com.jinhao.provider.user.service;

import cn.com.jinhao.provider.user.entity.Dept;

import java.util.List;
import java.util.Map;

/**
 * HotLine
 * <p>Description: 部门信息服务</p>
 *
 * @author ShaneMew
 * @version 1.0
 * @date 2019/11/25
 * @since 2019-11-25
 */

public interface DeptService {
    /**
     * 通过主键查询部门信息
     *
     * @param id 主键ID
     * @return Dept {@link Dept}
     */
    Dept queryByPrimaryKey(String id) throws Exception;

    /**
     * 通过部门编码查询部门信息
     *
     * @param code 部门编码
     * @return Dept {@link Dept}
     */
    Dept queryByDeptCode(String code) throws Exception;

    /**
     * 新增部门
     *
     * @param dept 部门信息    {@link Dept}
     */
    void add(Dept dept) throws Exception;

    /**
     * 更新部门信息
     *
     * @param dept 部门信息    {@link Dept}
     */
    void update(Dept dept) throws Exception;

    /**
     * 删除部门
     *
     * @param id 部门ID
     */
    void delete(String id) throws Exception;

    /**
     * 通过部门编码删除部门
     *
     * @param deptCode 部门编号
     */
    void deleteByDeptCode(String deptCode) throws Exception;

    /**
     * 通过用户编码查询部门编码
     *
     * @param userCode 用户编码
     * @return String   部门编码
     */
    String queryDeptCodeByUserCode(String userCode) throws Exception;

    /**
     * 查询所有的部门信息
     *
     * @param pageNo   页数
     * @param pageSize 记录条数
     * @return List 部门列表
     */
    Map<String, Object> queryAll(int pageNo, int pageSize) throws Exception;

    /**
     * 查询所有当前部门的下级部门
     *
     * @param parentDeptCode 父部门编码
     * @return List  部门列表
     */
    List<Dept> queryByParentDeptCode(String parentDeptCode) throws Exception;

    /**
     * 通过部门编码查询用户名称
     *
     * @param code 部门编码
     * @return String  部门名称
     */
    String getNameByCode(String code) throws Exception;
}
